Informatica Cloud Data Integrationの最重要ETL機能「Mapping」のチュートリアルをやってみた
どうも!DA部の春田です。
本ブログでは次世代のETLプラットフォーム、Informatica Intelligent Cloud Services(以降、IICS)のチュートリアルを進めていきます。いざ、マッピング実装!
マッピングチュートリアルの流れ
今回のチュートリアルの流れです。なじみのない単語があるかと思いますが、このチュートリアルを進めていけば大まかに把握できるかと思います。
- マッピング(ETL処理のフレームワーク)を作成する
- データソース(ETL処理の"E")を設定する
- Filter(ETL処理の"T")を作成する
- ターゲット(ETL処理の"L")を設定する
- 作成したマッピングにエラーがないか確認
- 作成したマッピングをもとにタスクを作成する
事前準備として、Informatica Cloud Data Integrationの環境をAWS上で構築してみた | Developers.IOを参考にIICSの環境をご用意ください。また、サンプルデータをSample Source File for the Mapping Tutorialから取得し、zipファイルを解凍してEC2インスタンスの~/sa_sample/
配下に配置しておきます。チュートリアルを進めていくプロジェクト配下に、Mappings
というフォルダも作成しておいてください。
マッピング(ETL処理のフレームワーク)を作成する
まず初めに、IICSで新規のマッピングを作成します。Data Integration画面の左メニューからNew
をクリックし、Mappings
→Mapping
を選択して作成します。
以下のようなマッピングデザイナーの画面が表示されるはずです。
作成したマッピングのプロパティ名は、チュートリアルになぞってm_Accounts_by_State
とでもしておきましょう。Locationは、先ほど作成したプロジェクト配下のフォルダcm-haruta\Mappings
を指定します。
マッピングの枠組みの構築はこれで完了です。データの変換処理を定義していくには、デザイナーの左端にあるアイコンをいじればいいことが何となく察せられます。
データソース(ETL処理の"E")を設定する
次に、作成したマッピング上でデータソースを設定します。一番左端にあるコレです。
デザイナー上でSourceをクリックすると、下に各種プロパティの設定画面が表示されます。とりあえずソース名はsrc_FF_Account
と書いておきましょう。
Sourceのタブで具体的な設定を行っていきます。Connectionは環境構築のチュートリアル時に作成したコネクションを選択できます。環境構築時はcm-haruta
という~/sa_sample/
をターゲティングしているコネクションを作成したので、こちらを選択します。Source Typeは、現在はSingle Object
、File List
、Command
、Parameter
の4つから選択できます。各種説明は、下に箇条書きでまとめておきます。
- Single Object
- CSVやJSONなどの単体ファイル
- File List
- 複数のファイルへのパスを記載したテキストファイル
- 記述方法は結構細かめなので、今回は割愛します
- 参照: File lists
- Command
- File Listを動的に作成するためのシェルスクリプトなど
- Parameter
- IICS上で作成できるKey-Value型の変数
今回はSingle Objectを選択します。その後、Objectの項目でSelect...
をクリックすると、IICSがコネクションの先、この場合~/sa_sample/
配下のデータファイルをブラウズしてくれます。Account.csv
を選択してOKをクリックした後、Preview Data
をクリックすればデータの中身を確認することができます。
最後に、デザイナー右上のSaveをクリックして保存しましょう。これでデータソースの設定は完了です。
ちなみに、Fields
のタブをクリックすれば、IICSが自動で解析したデータのメタ情報を閲覧することができます。
Filter(ETL処理の"T")を作成する
続いてETL処理のメインディッシュ、データの変換処理をデザイナー上で定義していきます。本チュートリアルでは、Filterと呼ばれるパーツを使ってデータを変換し、ターゲットへ流していきます。FilterはSQLでいうWHERE
と同じような働きをします。
Filterはデザイナー左の変換パレットの中にあります。これをドラッグして、SourceとTargetの間にドロップしましょう。
接続したFilterをクリックすると、Sourceの時と同じように下にプロパティの設定フォームが表示されます。Nameはflt_Filter_by_State
にしておきます。名前の通り、このFilterではデータ内のState
を指定した絞り込みを行っていきます。
左タブの中からFilterをクリックし、Filter ConditionでSimple
を選択します。右端にある+
マークをクリックすると、Filter Conditionsの表に新規の行が追加されます。
Field Nameは今回の絞り込み対象のState
、Operatorには= (Equals)
を選択し、ValueではNew Parameter
を選択して絞り込み用のパラメータを作成していきます。パラメータの設定項目は以下とします。
- Name
- p_FilterConditionValue
- Display Label
- Filter Value for State
- Description
- Enter the two-character state name for the data you want to use.
- Type
- string(で自動設定されているはず)
- Default Value
- MD
Default ValueでMDを設定しておけば、パラメータを何も指定しなかった場合はState = MD
で絞り込みが行われます。OK
をクリックしてポップアップを閉じ、一旦Saveしておきます。Filterの設定はこれでOKです。
ターゲット(ETL処理の"L")を設定する
Mappingの最後に、データの出力の設定を行っていきます。デザイナー上でTargetをクリックし、プロパティ設定画面を表示させましょう。Nameはtgt_Accounts_by_State
にします。
続いて左タブのTargetをクリックし、ConnectionをSourceと同様cm-haruta
、Target TypeをParameter
を選択します。この設定では、Sourceと同じEC2インスタンスのディレクトリに変換後のデータが出力されるわけですが、Target TypeをParameter
にすることで、そのパラメータごとに分割してファイルを出力できるようになります。
New Parameter
をクリックし、Nameにp_StateTargetParameter
、Display LabelにAccounts for State
を設定してください。
続いてField Mappingのタブをクリックし、Field map optionsでAutomatic
を選択します。左のIncoming Fieldsにはデータのメタ情報が記載されていますが、右のTarget Fieldsには何も表示されていません。これは、先ほどTarget TypeをParameter
にしたため、出力されるFieldsはタスク実行時に都度決定されるためです。
これでターゲットの設定は完了です。
作成したマッピングにエラーがないか確認
画面にValidが表示されているのが確認できたら、Run
をクリックしてマッピングを実行してみましょう。
実行ウィザードが表示されます。Runtime EnvironmentをSecure Agentが起動しているEC2インスタンスに指定して、Next >
をクリックします。
続いて、出力設定の画面が表示されます。データソースのACCOUNT.csv
を上書きすることもできますが、今回はCreate Target
をクリックして新しい出力ファイルを指定していきます。
ポップアップが表示されたら、ObjectをAccounts_By_State_TX
として、OKを押してください。これが変換後データの出力ファイル名になります。
Next >
をクリックすると、最後にパラメータの入力画面が表示されます。デフォルトのMD
をTX
に書き換えてください。Runをクリックするとジョブが起動します。
ジョブが正常に起動されると下のようなInfoが表示されるので、My jobs
をクリックしてジョブ一覧の画面に飛んでください。一番左ナビゲーションバーのMy jobs
からでも可能です。
ジョブ一覧画面の一番上が最新の実行です。ひとまずSuccessとなっているので、ジョブは成功したみたいですね。こちらをクリックすると、実行結果の詳細画面が表示されます。
EC2インスタンスの~/sa_sample/Accounts_By_State_TX
に出力されたデータが以下の通りです。State = TX
のレコードのみ抽出されていますね。
"ID","NAME","STREET","CITY","STATE","ZIPCODE","ANNUAL_REVENUE" "12345","United Oil & Gas - Texas","17th Avenue","South City","TX","52330","3400000" "23422","Edge Communications","312 Constitution Place^M","Austin","TX","34933","139000000" "59993","Pyramid Construction Inc.","2 Place Jussieu","Paris","TX","75251","950000000"
これでマッピングの作成は完了です。
作成したマッピングをもとにタスクを作成する
さて、マッピングはあくまでプログラミング言語で言う関数のようなものなので、これだけは運用していくことができません。マッピングを制御するMapping Taskを作成していきます。先ほどのマッピングの画面で、右上にある三点をクリックし、New Mapping Task
をクリックします。
マッピングタスクの設定画面が表示されます。Task Nameはmt_Accounts_by_State_task
、Runtime EnvironmentはEC2インスタンスを選択してください。Next >
をクリックします。
ターゲットの設定画面とパラメータ入力が表示されます。先ほどのテストと同じように設定してもらえればOKです。
最後に表示されるScheduleが、マッピングタスクの主機能といっていいでしょう。ここではスケジュール実行やメール通知、マッピングタスク実行前後のコマンド実行、あらかじめ作成したパラメータファイルからの入力設定など、運用を楽にしてくれる様々な機能を設定することができます。今回は何もいじらず、そのまま完了させましょう。
最終的に、以下のようなマッピングタスクが作成できました。右上のRunをクリックすれば、一発でマッピングを実行することができます。
チュートリアルは以上です!
次のステップ
IICSで実現できるETL処理の概要はお分かりいただけたでしょうか?今回はFilterのみ用いたデータ変換処理でしたが、IICSはまだまだ多くのマッピングツールを保持しています。
Developers.IOでは機能一つ一つを丁寧にご紹介していきたいとおもいますので、乞うご期待ください!